Distributed systems often use state machine replication in order to provide consistency across a plurality of nodes which make up a system. This involves modeling data and modifications to the data as a state machine and replicating the state machine so that every replica can arrive at the same state by performing the same updates. Since the rise of consensus protocols and distributed logging, which enable a distributed system to provide updates to replicas in order, state machine replication has become a popular mechanism for data replication. However, state machine replication generally requires that the state machine be generated. Most systems come with a single baked-in model that the user is forced to use, or the user is forced to generate their own-model, which is done by hand. This may be inefficient, time-consuming, and error-prone.
As such, there is a need in the art for a more efficient way of providing and maintaining a state machine in a distributed system.